package beans;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;

import javax.swing.ImageIcon;

public class Zombie
{
	//声明
	public int x;
	int y;
	int HP;//僵尸的生命值
	int page;//僵尸的图片张数
	/**
	 * 
	 * 1.前进2.啃食3.死亡4.待清除5.炸死 6.僵尸胜利
	 */
	public int state;//僵尸的各种状态
	GameFrame mainFrame;//主框架
	
	public Zombie( int x,int y)
	{
		this.x = x ;
		this.y = y ;
		walkState();
		HP=50;
	}

	private void walkState()
	{
		state=1;
	}
	
	private void paintWalk(Graphics g)
	{
		Image image = (new ImageIcon("植物大战僵尸/僵尸/普通僵尸/Zombie3/Frame"+page+".png")).getImage();
		g.drawImage(image, x, y, null);
	}
	
	private void walkChangePage()//前进换张
	{
		if(page==17)
		{
			page=0;
		}
		else
		{
			page++;
		}
	}
	
	public void walkActivity(Plant[][] plant)//前进的活动 有可能的事情
	{
		x-=5;
		/*if(x<0) {
			//如果到终点了，僵尸胜利
			zombieWinState();
		}*/
		for(int row= 0;row < 5; row++)//循环每一行
		{
			for(int column= 0;column <= 8; column++)//循环每一列
			{
				if (isCollisionPointPlant(plant[row][column])) 
				{
					eatState();
				} 
			}
		}
		
		if(HP<=0)
		{
			deathState();
		}
	}
	
	private void eatState()//吃的状态
	{
		state=2;
		page=1;
	}
	
	private void paintEat(Graphics g)//画吃的状态
	{
		Image image = (new ImageIcon("植物大战僵尸/僵尸/普通僵尸/ZombieAttack/Frame"+page+".png")).getImage();
		g.drawImage(image, x, y, null);//绘制图片API
	}
	private void eatChangePage()//改变吃的状态图
	{
		if(page==20)
		{
			page=0;
		}
		else
		{
			page++;
		}
	}
	private void eatActivity(Plant[][] plant)//吃的活动，可能发生的事件
	{
		for (int row = 0; row < 5; row++)
		{
			for (int column = 0; column < 9; column++)
			{
				if(isCollisionPointPlant(plant[row][column]))
				{
					plant[row][column].HP--;
				}
			}
		}
		
		if(!isCollisionEveryPlant(plant))
		{
			walkState();
		}
		
		if(HP<=0)
		{
			deathState();
		}
	}
	


	
	
//	private void 啃食exit()
//	{
//		
//	}
	
	private void deathState()
	{
		
		state=3;
		page=1;
	}
	
	private void paintDeath(Graphics g)
	{
		Image imageOne = (new ImageIcon("植物大战僵尸/僵尸/普通僵尸/ZombieDie/Frame"+page+".png")).getImage();
		g.drawImage(imageOne, x, y, null);//绘制图片API
		Image imageTwo = (new ImageIcon("植物大战僵尸/僵尸/普通僵尸/ZombieHead/Frame"+page+".png")).getImage();
		g.drawImage(imageTwo, x+50, y, null);//绘制图片API
	}
	
	private void deathChangePage()//死亡状态图 换张
	{
		if(page==17)
		{
			clearState();
		}
		else
		{
			page++;
		}
	}

	public void bombDeathState()//炸死状态
	{
		state=5;
		page =0;
	}
	
	private void paintBombDeath(Graphics g)//炸死显示
	{
		Image image = (new ImageIcon("植物大战僵尸/僵尸/炸死/Frame"+page+".png")).getImage();
		g.drawImage(image, x, y, null);
	}
	
	private void bombDeathChangePage()//炸死切换图片
	{
		if(page==19)
		{
			clearState();
		}
		else
		{
			page++;
		}
	}
	//////////////////////////////////////////////////////////////////////////////////
	/*private void zombieWinState()//僵尸胜利的状态
	{
		state=6;
	}
	private void paintZombieWin(Graphics g)//画僵尸胜利的状态
	{
		Image image = (new ImageIcon("植物大战僵尸/背景/我是猛男.png")).getImage();
		g.drawImage(image, 0, 0, null);//绘制图片API
	}
	private void zombieWinActivity()//僵尸胜利就退出到界面二
	{
		mainFrame.gamePicture.music.stopPlayer();//停止音乐
		mainFrame.gamePicture=null;//开始界面改为0
		mainFrame.startPicture = new StartInterface(mainFrame);//把主框架放入进入游戏界面，实例化
	}*/
//	private boolean isWin() {//是否胜利
//		if(x<-10) {
//			return true;
//		}
//		return false;
//	}
	
	private void clearState()//清除僵尸 状态=4
	{
		state=4;
	}
	private boolean isCollisionEveryPlant(Plant[][] plant)//是否碰到任意一个植物
	{
		for (int row = 0; row < 5; row++)
		{
			for (int column = 0; column < 9; column++)
			{               //判断植物的矩形框 是否与 僵尸的矩形框 相交
				if(plant[row][column]!=null&&new Rectangle(x+34, y+81, 80, 100).intersects(plant[row][column].x+34, plant[row][column].y+81, 70,70))
				{
					return true;
				}
			}
		}
		return false;
	}

	private boolean isCollisionPointPlant(Plant plant)//是否碰到指定的一个植物
	{
		if(plant!=null&&new Rectangle(x+34, y+81, 80, 100).intersects(34+plant.x, 81+plant.y, 80,100) )
			return true;
		return false;
	}
	public void paint(Graphics g)//画僵尸
	{
		if(state==1)//画走路
		{
			paintWalk(g);
		}
		
		if(state==2)//画吃饭
		{
			paintEat(g);
		}
		
		if(state==3)//画死亡
		{
			paintDeath(g);
		}
		
		if(state==5)//画炸死
		{
			paintBombDeath(g);
		}
		/*if(state==6)
		{
			paintZombieWin(g);
		}*/
	}
	
	public void activity(Plant[][] plant)//僵尸的所有活动
	{
		if(state==1)//走路的活动
		{
			walkChangePage();
			walkActivity(plant);//走路时可能与植物发生活动
		}
		
		if(state==2)//吃饭的活动
		{
			eatChangePage();
			eatActivity(plant);//吃饭时可能与植物发生活动
		}
		
		if(state==3)//死亡的活动
		{
			deathChangePage();
		}
		
		if(state==5)//炸死的活动
		{
			bombDeathChangePage();
		}
		/*if(state==6) 
		{
			zombieWinActivity();
		}*/
	}
}
